import { extend, ResponseError, OnionMiddleware } from 'umi-request';
import { notification } from 'antd';
import { history } from 'umi';
import { ProviderContext } from 'notistack';

const codeMessage = (status: number) => {
  switch (status) {
    case 200:
      return '服务器成功返回请求的数据。';
    case 401:
      return '用户没有权限（令牌、用户名、密码错误）。';
    case 500:
      return '服务器发生错误，请检查服务器。';
    case 502:
      return '网关错误。';
    case 503:
      return '服务不可用，服务器暂时过载或维护。';
    case 504:
      return '网关超时。';
    default:
      return '请求出错。';
  }
};

/**
 * 异常处理程序
 */
export function errorHandler(error: ResponseError, snackbar: ProviderContext) {
  const {
    response: { status, statusText },
    data,
  } = error;

  let errortext: string = codeMessage(status) || statusText;
  if (data && data.message) {
    errortext = data.error || data.message;
  }
  snackbar.enqueueSnackbar(errortext, {
    variant: 'error',
    anchorOrigin: {
      vertical: 'bottom',
      horizontal: 'center',
    },
  });
  throw { message: errortext };
}

// /**
//  * 配置request请求时的默认参数
//  */
// const request = extend({
//   errorHandler, // 默认错误处理
// });

// export default request;
